package src.project1;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;
import java.util.Scanner;

public class StudentSystem {
    private boolean quited;
    private Scanner std;
    private StudentService stuService;//用于对学生信息的操作

    public StudentSystem() {
        quited = false;
        std = new Scanner(System.in);
        try

        {
            stuService = new StudentService("e:\\studentMessage.txt");
        }
        catch(
                IOException e)

        {
            System.out.println("加载学生信息失败");
        }
    }





    public static  void screenOut() {//屏幕上显示的信息
        System.out.println("***************** 学生信息管理系统  **************");
        System.out.println("*******  1.add往文件中添加一个新的学生信息   *******");
        System.out.println("**** 2.delete输入学号后从文件中删除指定学号的学生****");
        System.out.println("****  3.list列出文件中的所有学生，按上面的格式   ****");
        System.out.println("****            4.quit退出程序                ***");
        System.out.println("***5.search根据姓名模糊查询所有匹配的学生并列出来 ****");
        System.out.println("******  6.sort根据字段对学生信息进行排序并列出来*****");
    }

    /**
     * 开始处理cmd命令
     */
    public void Start(){

        screenOut();//调用显示界面方法
        while(quited!=true){
            //提示用户输入
            System.out.print("CMD>");
            String cmd=std.nextLine();
            dealCommand(cmd);//调用每一个功能
            System.out.println();
        }

    }

/**
 * 处理命令打印出来方法
 */

    public void dealCommand(String cmd){
        String[] six=cmd.split(" ");
        System.out.println("执行指令："+six[0]);
        switch (six[0]){
            case "add":
                System.out.print("添加一个学生！");
                addStudentProperty();break;
                //System.out.println("添加学生信息");break;
            case "delete":
                System.out.print("删除指定学号的学生");
                if (six.length>1){
                    deleteStudent(six[1]);
                }break;
            case "list":
                System.out.println("列出文件中的所有学生，按上面格式");
                listStudentsMes();
                break;
            case "quit":
                quited=true;
                System.out.println("退出程序");break;
            case "search":
                    System.out.println("根据姓名模糊查询所有匹配的学生并列出来");
                    searchStudents(six[1]);
                    break;
            case "sort":
                System.out.println("根据字段对学生信息进行排序并列出来");
                sortListStudents(six[1]);
                break;
                default:
                    System.out.println("输入未识别的指令");break;



        }
    }

    /**
     * 1.添加用户的操作
     *
     */
    public void addStudentProperty(){
        //提示用户输入学生名字，学号，年龄，手机，出生日期，毕业院校，高考成绩
        StudentMessage student=new StudentMessage();
        System.out.println("请输入学生姓名");
        String input=std.nextLine();
        student.setName(input);

        System.out.println("请输入学生的学号");
         input=std.nextLine();
         student.setNo(input);

        System.out.println("请输入学生年龄");
        student.setAge(Integer.parseInt(std.nextLine()));

        System.out.println("手机");
        student.setMobile(std.nextLine());

        System.out.println("出生日期");
        student.setBriDate(std.nextLine());

        System.out.println("毕业院校");
        student.setGraduate(std.nextLine());

        System.out.println("高考总分");
        student.setScore(Integer.parseInt(std.nextLine()));

    }

    /**
     * 2.执行删除操作
     */
    public void deleteStudent(String no){
        //调用studentService将其指定学号的学生信息从列表删除
        stuService.delete(no);

    }

    /**
     * 3.列出所有学生信息
     */
    public  void listStudentsMes(){
        System.out.println("列出学生列表");
        List<StudentMessage> list=stuService.list();//获取所有学生列表
        //将学生列表打印出来
        System.out.println("姓名\t学号\t年龄\t手机\t出生日期\t毕业院校\t高考分数");
        for (int i = 0; i <list.size() ; i++) {
            System.out.printf("%s\t%s\t%d\t%s\t%s\t%s\t%d\n",list.get(i).getName(),
            list.get(i).getNo(), list.get(i).getAge(), list.get(i).getMobile(), list.get(i).getBriDate(),
            list.get(i).getGraduate(),
            list.get(i).getScore());
        }
    }

    /**
     * 4.执行退出保存，因为所有操作都是现在内存中进行操作的，需要执行quit保存到文件
     */
    public void quitSystem(){

    }

    /**
     * 5.根据学生姓名查询学生信息
     */
    public void searchStudents(String nameRegex){
        List<StudentMessage>list=stuService.searchStudent(nameRegex);
    }

    /**
     * 6.根据指定字段对学生进行排序
     * @param condition
     */
    public void sortListStudents(String condition){

}

}
